package com.tqfframe.rabbitmq.config;

import com.tqfframe.rabbitmq.constants.RabbitConstants;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * DirectExchange交换机配置，普通消息队列
 * @author: Qifeng Tang
 * @date: 2022/8/31 11:36
 * @Version 1.0
 **/
@Configuration
public class RabbitMqDirectConfig {

    // 提供一个消息队列 Queue
    @Bean
    Queue commonqueue() {
        return new Queue(RabbitConstants.COMMON_QUEUE);
    }

    // 提供一个 DirectExchange
    @Bean
    DirectExchange directExchange() {
        // 三个参数分别是名字、重启后是否依然有效、长期未使用时是否删除
        return new DirectExchange(RabbitConstants.COMMON_EXCHANGE, true, false);
    }

    // 创建一个Binding对象，将Exchange和Queue绑定在一起
    @Bean
    Binding binding() {
        return BindingBuilder.bind(commonqueue())
                .to(directExchange()).with(RabbitConstants.COMMON_ROUTINGKEY);
    }

}
